

#ifndef __SKINMESHGPU_H__
#define __SKINMESHGPU_H__


#include <gfx/iskinmesh.h>
#include <gfx/mesh.h>

struct iDevice;


/**
 * \addtogroup opengl
 * @{
 */

/**
 * @brief Implemenation of the iSkinMesh interface using the GPU.
 */
class ceSkinMeshGPUGL20 : public iSkinMesh
{
  CE_OBJECT
private:
  ceMesh*			_mesh;

  ceSkeleton*	_skeleton;

public:
  ceSkinMeshGPUGL20();
  ~ceSkinMeshGPUGL20();

  virtual void Draw (const ceRenderEnvironment& renderEnvironment, iDevice* device);
  virtual void Update (const ceRenderEnvironment& renderEnvironment, iDevice* device);

  virtual void SetMesh (ceMesh* mesh);
  virtual const ceMesh* GetMesh () const;
  virtual ceMesh* GetMesh();

  virtual void SetSkeleton (ceSkeleton* skeleton);
  virtual ceSkeleton* GetSkeleton ();
  virtual const ceSkeleton* GetSkeleton () const;
  
  const ceBoundingBox& GetBoundingBox () const;

};

/** @} */

#endif /* ! __SKINMESHGPU_H__ */

